以下のプログラムの中に
$mt = preg_match("/". $valueptr . "/", $valuestr)
がありまが、. $valueptr . の$valueptrが..(ドット)の文字列連結演算子
でなぜ文字をつなげる必要があるのでしょうか?
foreach($ptr as $valueptr){で指定しているので、表の行には
必要に応じて文字列が順番に表示されると思います。
なので必要性ないような気がします!?
宜しくお願いします。
<!DOCTYPE html>
<html>
<head>
<title>^ $ で文字検索(行頭・行末)</title>
</head>
<body>
<?php
$ptr = array("ABC", "^ABC", "ABC$", "^ABC$");
$str = array("ABC", "ABCC", "ABCCC","AABC");
?>
<table border="2">
<tr bgcolor="#AAAAAA">
<th>パターン</th>
<th>文字列</th>
<th>マッチ</th>
</tr>
<?php
foreach($ptr as $valueptr){
foreach($str as $valuestr){
print "<tr><td>{$valueptr}</td><td>{$valuestr}</td>";
$mt = preg_match("/". $valueptr . "/", $valuestr)
? "〇": "×";
print "<td>{$mt}</td></tr>\n";
}
}
?>
</table>
</body>
</html>
No.2ベストアンサー
- 回答日時:
> 間違いでしょうか?
間違いです。
foreach($ptr as $valueptr){
foreach($str as $valuestr){
(中略)
}
}
の意味をご理解いただいているのでしょうか?
$ptrと$strは要素を4個ずつ持っているので
$mt = preg_match("/". $valueptr . "/", $valuestr) ? "〇": "×";
は各々値を変えて、4×4の計16回実行されて表示されます。
即ち以下の通りです。
$valueptrの値 $valuestrの値 preg_match("/". $valueptr . "/", $valuestr)
"ABC" "ABC" preg_match("/ABC/", "ABC")
"ABC" "ABCC" preg_match("/ABC/", "ABCC")
"ABC" "ABCCC" preg_match("/ABC/", "ABCCC")
"ABC" "AABC" preg_match("/ABC/", "AABC")
"^ABC" "ABC" preg_match("/^ABC/", "ABC")
"^ABC" "ABCC" preg_match("/^ABC/", "ABCC")
"^ABC" "ABCCC" preg_match("/^ABC/", "ABCCC")
"^ABC" "AABC" preg_match("/^ABC/", "AABC")
"ABC$" "ABC" preg_match("/ABC$/", "ABC")
"ABC$" "ABCC" preg_match("/ABC$/", "ABCC")
"ABC$" "ABCCC" preg_match("/ABC$/", "ABCCC")
"ABC$" "AABC" preg_match("/ABC$/", "AABC")
"^ABC$" "ABC" preg_match("/^ABC$/", "ABC")
"^ABC$" "ABCC" preg_match("/^ABC$/", "ABCC")
"^ABC$" "ABCCC" preg_match("/^ABC$/", "ABCCC")
"^ABC$" "AABC" preg_match("/^ABC$/", "AABC")
文字の連結云々は、あくまでも$valueptrの両側に"/"をくっつけているだけです。
再度、又お分かりやすいご回答をくださいましてありがとうございました。
>$ptrと$strは要素を4個ずつ持っている<
了解です。
("/". $valueptr . "/", $valuestr) は
>各々値を変えて、4×4の計16回実行されて表示<
..(ドット)役割ですが!アナログ的な表現をした場合、背景では沢山の一連の
仕事をやっていることがご回答でよくわかりました^^
まだ完ぺきではないのですが、徐々に理解を深めた行きたいと思います。
助かりました。
今後ともよろしくお願いいたします。
No.3
- 回答日時:
>仮に
>1)$ptr = array("ABC", "^ABC", "ABC$", "^ABC$");の文字列をつなげた場合ですが
> ABC^ABCABC$^ABC$ となっる。
文字列連結演算子でつなげるのは、$valueptr であって $ptr ではありませんよ
foreach($ptr as $valueptr){
ですから、$valueptr は $ptr の一要素、たとえば "ABC" や "^ABC"
になるので、連結したあとの
"/". $valueptr . "/"
は、それぞれ "/ABC/" や "/^ABC/" になります。
両側を/で囲んだ文字列にして、めでたく preg_match を呼び出しているということです。
ご回答くださいましてありがとうございました。
>文字列連結演算子でつなげるのは、$valueptr であって $ptr ではありません<
了解です。
("ABC", "^ABC", "ABC$", "^ABC$");をarrayで配列しているですね!
>$valueptr は $ptr の一要素、たとえば "ABC" や "^ABC"<
になるので、連結したあとの"/". $valueptr . "/"
は、それぞれ "/ABC/" や "/^ABC/" になります。<
了解です。
siffon9様のご回答に詳しくありましたので
それを参考に今から学習を進めていきたいと思います。
今後ともよろしくお願いいたします。
No.1
- 回答日時:
preg_matchはperl互換正規表現と呼ばれていますが、
preg_match(文字列1,文字列2)と記述するとき、文字列1は必ず//で囲むことが慣例になっています。
提示例の1回目の文字列の比較は、"ABC"と"ABC"なので
preg_match("/ABC/","ABC")のようになります。
その為、(ドット)の文字列連結演算子で文字列をつなげています。
下記URLを参照ください。
http://php-web.net/regular/preg.html
ご回答くださいましてありがとうございます。
>1回目の文字列の比較は、<
>preg_match("/ABC/","ABC")のようになります。<
この意味は分かりました。
>その為、(ドット)の文字列連結演算子で文字列をつなげています。<
の>文字列をつなげています。< ここですが!
意味がいまいちわかりません?
それで質問です。
"/". $valueptr . "/" ?ですが!
この場合、文字列連結演算子で
何処の文字列をつなげているかで、二つに一つと思います。
仮に
1)$ptr = array("ABC", "^ABC", "ABC$", "^ABC$");の文字列をつなげた場合ですが
ABC^ABCABC$^ABC$ となっる。
2)$str = array("ABC", "ABCC", "ABCCC","AABC");の文字列をつなげた場合
ABCABCCABCCCAABC となる。
以上ですが、私的には以上のしか想像がつきません。
間違いでしょうか?
宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- HTML・CSS 自身のHPにYouTube動画を貼り付けるのが出来なくなり困ってます 1 2022/11/11 10:44
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- HTML・CSS 【CSS】:hasで可能? imgを含むtr要素を選択したい 1 2022/11/17 14:36
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
preg_matchでエラーが出ます。
-
PHPメールフォーム URLと半角...
-
VBAを使ってHTMLソースから特定...
-
VBAのコマンドボタンの文字列の...
-
メッセージボックスで1025文字...
-
エスケープ文字の復帰(¥r)と...
-
ソースコードの1行が長いとき...
-
文字の入力で横バー上段、中断...
-
全角括弧と全角読点の間隔を狭...
-
VBScriptである文字列に半角文...
-
Excel VBAからBeckyを起動して...
-
Excel関数「COUNTIF」で”文字”...
-
文字列の置換をCStringで(C++)
-
改行を読み飛ばす
-
C++で空Enterの入力を判...
-
ラベル(スタティックテキスト)...
-
半角文字と全角文字の判別の仕方
-
XmlTextWriterで改行、RichText...
-
改行コードの変換
-
PHPでexec関数の記述方法について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
preg_matchでエラーが出ます。
-
VBAを使ってHTMLソースから特定...
-
Excelで数字のみを2倍3倍にする...
-
PHPで変数から1行目だけを取得...
-
正規表現でシングルクォーテー...
-
、"(ダブルクォーテーション)...
-
正規表現で「0」のみ抽出
-
住所から特定の文字列、数値を...
-
phpでhtmlソースを解析し、文字...
-
PHPで あるフォルダ内の、特定...
-
PHPで<a>タグ内からURLと文字を...
-
正規表現で特定のHTMLタグのク...
-
PHPの正規表現で住所を分けるに...
-
Smartyを使用した、テンプレー...
-
正規表現で、半角大文字と半角...
-
PHPによるIPアドレスマッチ
-
php 正規表現で(ただし○○は除...
-
PHPメールフォーム URLと半角...
-
「半角数字」と「+」を許可する...
-
preg_matchでのマッチが正しく...
おすすめ情報
皆様ご回答くださいましてありがとうございます。
手が空き次第調べたいと思います。
しばらくお待ちください。