人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

■PHP Smarty配列の文字判断について


・{$entity[3]|@var_dump} を処理すると下記の通り”担当者”の文字が入っていることを
確認いたしました。

実行結果(string(134) " 担当者 ")



・次に上記配列の文字で、文字列判断をした際、下記の通りとなります。
{if $entity[3]=='担当者'}○{else}×{/if}

実行結果(×) と表示されます。



文字列の条件式を記述方法、又は環境の問題なのか分からないので何かヒントを教えていただけると助かります。
宜しくお願い致します。

●質問者: sugasugac
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
ベストアンサー

実行結果(string(134) " 担当者 ")

長さが 134 ってなってます。
"担当者" の前後に空白がいっぱい入ってたりしません?


こういう感じのことをやってあげる必要があると思います。

<?php
// 正規表現を使って判定するか...
if (preg_match("/担当者/", $entity[3])) {
 ...
}

// 前後の空白を切り取ったもので比較するか...
if (trim($entity[3]) == '担当者') {
 ...
}
?>


sugasugacさんのコメント
有難うございます。遅れて申し訳ありません。 Smartyの言語でほんとポイントがつかめません。 $entity[3]の配列には、'担当'が入っています。 ------------------------------------------------ {assign var=i value=$entity[3]|trim} {if $i=='担当'}★{/if} {$i|@var_dump} {$i|@count} ------------------------------------------------ 実行結果(string(132) "担当 " 1) 担当の文字列が入っているのに、文字のカウントが1なのです。 確かに最後に空白があるのは認識致しました。最後の空白が取り除けません。 申し訳ございません。

a-kuma3さんのコメント
あら? ベストアンサーで終了してるってことは、自己解決したのかな……

sugasugacさんのコメント
”空白が入っている事が原因” おかげさまで解決は致しました・・・が 文字列を切り出して、置換してという感じで対応いたしました。 string(10) " 担当..." この文字列にしてから 空白と、ピリオドを置換して、6バイトにして文字列比較するという感じ・・ なんとも非効率的な方法と思います。 ---------------------------------------------------------------------- {assign var=i value=$data|truncate:10|replace:" ":""|replace:".":""} {if $i=='担当'}★{/if} {$i|@var_dump} ---------------------------------------------------------------------- 実行結果(★ string(6) "担当") smarty書式でもっと良い方法があれば宜しくお願い致します。 とりあえず判断できるようになりました。有難うございます。

sugasugacさんのコメント
{assign var=i value=$data|strip_tags|trim} 見えないタグを除去且つ、TRIMでOKで納得できる形になりました。 助言を頂き、確信をもって調べることができたので助かりました。有難うございました。

a-kuma3さんのコメント
Smarty だということを、ばっさり見落とした、ピント外れの回答でしたが、解決のお役にたてたようで、良かったです (^^;
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ