• ベストアンサー

php 指定文字列以降の削除

phpにて半角スペース以降の文字列を問答無用で削除するというプログラムを作ろうとしてるのですが上手くいきません。 どうすればできますでしょうか? ご教授のほどよろしくお願いいたします。 ---- ソースコード $str = '2017/1/1 10-28'; if (preg_match("/ /", $str)){ $replace = str_replace(' ', '', $str); } echo $replace;

  • PHP
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • 4017B
  • ベストアンサー率73% (1306/1777)
回答No.2

コピペミス!と言うか間違えました…置換処理は str_replace() では無く preg_replace() の方で行ってください。後、文字コードはUTF8に事前に統一してから処理を行ってください。 # 正しいコード記述例: $str = '2017/1/1 10-28'; if ( false !== mb_strpos($str,' ','UTF-8') ){ $replace = preg_replace( '/\A([^\x{20}]+)(?:\x{20}.*)?\z/su', '$1', $str ); } echo $replace;

kirawaremono_
質問者

お礼

ご回答ありがとうございます!

その他の回答 (1)

  • 4017B
  • ベストアンサー率73% (1306/1777)
回答No.1

$str = '2017/1/1 10-28'; if ( false !== mb_strpos($str,' ') ){ $replace = str_replace( '/\A([^\x{20}]]+)\x{20}.*\z/su', '$1', $str ); } echo $replace; P.S. mb_strpos() はphp4.0.6以降で. 古いphpを使わざるを得ない場合は strpos() で代替可能だが, 文字列内にマルチバイト文字が含まれるとエラーが生じる可能性あり.

kirawaremono_
質問者

お礼

ご回答ありがとうございます!

関連するQ&A

  • PHPの正規表現で【】内を文字列ごと削除

    あいうえお【かきく】けこさ。【しすせそ】 といった感じの文字列を、【かきく】や【しすせそ】を削除して、 ”あいうえお けこさ。” としたいのですが・・・ $str = preg_replace("【.*】"," ",$str) とすると、 あいうえお ってなっちゃうし、 $str = preg_replace("/【.{1,5}?】/"," ",$str) とかやってみても上手く行かず。 はて?「/」は何を意味するのだろう。とか思いながら試行錯誤してはみてるのですが・・・ どなたかご教授くださいませんでしょうか。 お願いします。

    • ベストアンサー
    • PHP
  • 文字列内にある「指定した空タグ」だけを削除したい

    文字列内にある「指定した空タグ」だけを削除するにはどうすれば良いでしょうか? ※HTMLタグはエスケープしていない状態で、変数として保持しています ■現状 <p>str_replaceでいけると思ったけど</p> <p></p> <p>preg_replace?</p> <p></p> ■希望 <p>str_replaceでいけると思ったけど</p> <p>preg_replace?</p>

    • ベストアンサー
    • PHP
  • スクリプトの書き方その3

    いつもお世話になります。 XOOPSのコードを読んでいるんですが、沢山の方が関与しているので、 スクリプトの書き方もまちまちです。 そのせいで、素人の私は完全に混乱状態になっています。 ※ PHPマニュアルのサイトでは、preg_xxxっていうのは、 /$str/ とういうように、/(スラッシュ)を使っているので、 !, %, | ? が出てくると、何が正しい書き方なのか全くわかりません。 質問 (1) preg_replace("[\r\n]", "", $str) と preg_replace("/[\r\n]/", "", $str) は同じですか? 質問 (2) preg_replace('!<[^>]*?>!', ' ', $string) と、 preg_replace('/<[^>]*?>/', ' ', $string) は同じですか? 質問 (3) (preg_match('!\W(\w+)$!s', $search, $match) と (preg_match('/\W(\w+)$/s', $search, $match) は同じですか? 質問 (4) preg_replace('?/\*.+\*/?sU', '', $val) の ?とはどういう意味ですか? preg_replace('/\*.+\*/sU', '', $val) と同じですか? それとも、 preg_replace('/?/\*.+\*/?/sU', '', $val) と同じですか? 質問 (5) preg_replace("%(?<!\\\\)'%", "\\'", $string) の、%とはどういう意味ですか? preg_replace("/(?<!\\\\)'/", "\\'", $string) と同じですか? それとも、 preg_replace("/%(?<!\\\\)'%/", "\\'", $string) と同じですか? 迷惑かけますが、どうか、教えて下さい。 よろしくお願いします。

    • 締切済み
    • PHP
  • PHPで文字列の比較しています

    PHPで文字列の比較しています 同一の値をエラーをかけたいのですが、 うまくいきません。 echoで出力していて可視は同じ値なのですが。 以下コードになります。 (実際はPHPExcelでExcelの値を配列にいれ電話番号の-抜いてます) $data[1][4]="03-0000-0000" $data[1][4]=str_replace("-","",$data[1][4]); $data[1][5]="03-0000-0000" $data[1][5]=str_replace("-","",$data[1][5]); if($data[1][5] == $data[$cols][4]) { echo "入力エラー:"; echo "同一電話番号が存在します。"; exit; }

    • ベストアンサー
    • PHP
  • PHPで文字列の比較しています

    PHPで文字列の比較しています 同一の値をエラーをかけたいのですが、 うまくいきません。 echoで出力していて可視は同じ値なのですが。 以下コードになります。 (実際はPHPExcelでExcelの値を配列にいれ電話番号の-抜いてます) $data[1][4]="03-0000-0000" $data[1][4]=str_replace("-","",$data[1][4]); $data[1][5]="03-0000-0000" $data[1][5]=str_replace("-","",$data[1][5]); if($data[1][5] == $data[1][4]) { echo "入力エラー:"; echo "同一電話番号が存在します。"; exit; }

    • ベストアンサー
    • PHP
  • 文字列全体に対する置き換え [正規表現]

    正規表現での文字列全体に対する、マッチ箇所 への置き換えについて、アドバイスをもらえないでしょうか。 parlでいうg修飾子はphpには無く、 例えば、[preg_match]は[preg_match_all]という関数で対応出来ますが、 置き換えを行う[preg_replace]には[preg_replace_all]がありません。 それに類する関数も無いように思います。 これに関して、PHPではどのように対応すれば良いのでしょうか。

    • ベストアンサー
    • PHP
  • PHPでheader情報がうまく表示できない

    ドコモ対応でXHTMLのヘッダー情報がうまく送れません。 PCからのテストで header('Content-Type: application/xhtml+xml'); をコード挿入すし、サイト表示の確認すると「ファイルのダウンロード 」ダイアログがでます。 header('Content-Type: application/xhtml+xml'); を入れずにテストするとダイアログはでません。 ・display.phpがメインページであくまでもskin.htmlをインクルードして置換しecho表示する感じなのですが・・・・・ 困っています。助けて下さい。 skin.html ----------------- <html> <body> <head> <!--%title--> </head> <body> コンテンツ </body> </html> ----------------- test.php -------------------------------------------------------------------------------------- 変数定義は省略 $html = file_get_contents($temp); $agent = $_SERVER['HTTP_USER_AGENT']; if(preg_match("/^DoCoMo/i", $agent)){ $html = str_replace( "<!--%title-->", $docomo, $html); header('Content-Type: application/xhtml+xml'); echo "$html"; } elseif(preg_match("/^(J\-PHONE|Vodafone|MOT\-[CV]|SoftBank)/i", $agent)){ $html = str_replace( "<!--%title-->", $softbank, $html); header('Content-Type: application/xhtml+xml'); echo "$html"; } elseif(preg_match("/^KDDI\-/i", $agent) || preg_match("/UP\.Browser/i", $agent)){ $html = str_replace( "<!--%title-->", $au, $html); header('Content-Type: application/xhtml+xml'); echo "$html"; } else{ $html = str_replace( "<!--%title-->", $other, $html); header('Content-Type: application/xhtml+xml'); echo preg_replace('/{.*?}/', '', $html); -------------------------------------------------------------------------------------- display.php ------------------------------------------ <?php $temp = "./skin.html"; require_once('./test.php'); ?>

    • ベストアンサー
    • PHP
  • PHPで文字を検索して取り込みたい。

    PHPで文字を検索して取り込みたい。 %の文字が、何度か出現するソースなのですが そのソースの中にある50%のような全角で%の数値を 取り込みたいのです。 //////ソース//////// <table> <TR> <TD>あ</TD> <TD><B>88%</B>/TD> </TR> <TR> <TD>す</TD> <TD><B>85%</B>/TD> </TR> ........... </table> /////////////////////// 下記のように実行しましたが 思うような結果は得られません。 <?php $str = file_get_contents('http://123456/index.html'); if (preg_match('!<table>\s*?(.*?)</table>!s', $str, $res)) $text = mb_convert_encoding($res[1],"shift-jis","UTF-8");preg_match_all("/-*[0-9]+/",str_replace(",","",$text),$matches); print ($matches[0][0]); ////////////////////////////// php初心者です。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • preg_replace 英数字以外の文字の前後のスペースを削除

    preg_replaceで 英数字の前後いずれかのスペースは残して それ以外のスペースを消したいのですが あ a間が消えてしまいます。(英数字前なので消さない) a aはのこるので英数字後のスペースは残せてます。 <?php $str = \"あ a a\"; $txt = preg_replace(\"/([^a-zA-Z\\d])\\s+/u\", \"$1\", $str); echo $txt;

    • ベストアンサー
    • PHP
  • preg_replace()でマッチ文字列に関数を

    PHPでのpreg_replace()でマッチした文字列に関数を適用したいのですが、上手くいきません。 $str = "hogeHoge"; $pattern = '/(h.ge)/i'; $replacement = strtoupper("$1"); echo preg_replace($pattern, $replacement, $str); // 期待する結果 : HOGEHOGE // 実行した結果 : hogeHoge 根本的に間違っているかもしれませんが、ご指南いただければ幸いです。

    • ベストアンサー
    • PHP