2

文字列(スクラップページから抽出)から特殊文字を削除する方法を教えてください。

 4:30am

時間を取得したいので、これを使用してフィルタリングしてみました。

$str = 'Â 4:30am';
$new_string = preg_replace("[^A-Za-z0-9]", "", $str); 
echo '<pre>'.$new_string.'</pre>';

しかし、それは変わりません:| 解決策/アプローチはありますか?

4

7 に答える 7

8

あなたの正規表現は無効です...

$str = 'Â 4:30am';
$new_string = preg_replace("~[^a-z0-9:]~i", "", $str); 
echo '<pre>'.$new_string.'</pre>';

...そして、正規表現で「:」を忘れたので、あなたの場合は削除されます。

于 2012-12-27T09:10:50.420 に答える
5

正規表現パターンは区切り記号で囲む必要があります。あなたの現在のパターンは区切り文字として[andを使用し]ていますが、これはおそらく意図したものではありません。

preg_replace("/[^A-Za-z0-9]/", "", $str); 

http://pl.php.net/manual/en/regexp.reference.delimiters.php

于 2012-12-27T09:10:40.533 に答える
3

使用$new_string = preg_replace("/[^A-Za-z0-9]/", "", $str);して修正する必要があります。

の最初のパラメーターはパターンで、またはpreg_replaceのようなもので囲む必要があります。/@

あなたの場合、 と がパターン区切り文字として扱われるパターンを使用して[^A-Za-z0-9][ます]。したがって、一致する実際のパターンは になり^A-Za-z0-9、入力内の何も一致しません。

于 2012-12-27T09:11:02.090 に答える
1

時間を取得するには:

$str = 'Â 4:30am';
$time = preg_match('/(?P<time>\d?\d:\d\d(?:am|pm))/', $str, $match);
var_dump($match);
于 2012-12-27T09:11:36.493 に答える
1

これを試して

$new_string = preg_replace("^[A-Za-z0-9]", "", $str); 
于 2012-12-27T09:12:59.303 に答える
0
$str = 'Â 4:30am';
$new_string = preg_replace("^\W", "", $str); 
echo '<pre>'.$new_string.'</pre>';
于 2012-12-27T09:13:49.820 に答える