文字列(スクラップページから抽出)から特殊文字を削除する方法を教えてください。
 4:30am
時間を取得したいので、これを使用してフィルタリングしてみました。
$str = 'Â 4:30am';
$new_string = preg_replace("[^A-Za-z0-9]", "", $str);
echo '<pre>'.$new_string.'</pre>';
しかし、それは変わりません:| 解決策/アプローチはありますか?
文字列(スクラップページから抽出)から特殊文字を削除する方法を教えてください。
 4:30am
時間を取得したいので、これを使用してフィルタリングしてみました。
$str = 'Â 4:30am';
$new_string = preg_replace("[^A-Za-z0-9]", "", $str);
echo '<pre>'.$new_string.'</pre>';
しかし、それは変わりません:| 解決策/アプローチはありますか?
あなたの正規表現は無効です...
$str = 'Â 4:30am';
$new_string = preg_replace("~[^a-z0-9:]~i", "", $str);
echo '<pre>'.$new_string.'</pre>';
...そして、正規表現で「:」を忘れたので、あなたの場合は削除されます。
正規表現パターンは区切り記号で囲む必要があります。あなたの現在のパターンは区切り文字として[
andを使用し]
ていますが、これはおそらく意図したものではありません。
preg_replace("/[^A-Za-z0-9]/", "", $str);
使用$new_string = preg_replace("/[^A-Za-z0-9]/", "", $str);
して修正する必要があります。
の最初のパラメーターはパターンで、またはpreg_replace
のようなもので囲む必要があります。/
@
あなたの場合、 と がパターン区切り文字として扱われるパターンを使用して[^A-Za-z0-9]
い[
ます]
。したがって、一致する実際のパターンは になり^A-Za-z0-9
、入力内の何も一致しません。
時間を取得するには:
$str = 'Â 4:30am';
$time = preg_match('/(?P<time>\d?\d:\d\d(?:am|pm))/', $str, $match);
var_dump($match);
これを試して
$new_string = preg_replace("^[A-Za-z0-9]", "", $str);
$str = 'Â 4:30am';
$new_string = preg_replace("^\W", "", $str);
echo '<pre>'.$new_string.'</pre>';