2011-08-30 90 views
2

我想知道如何在PHP中查找變量是否只包含1個單詞。它應該能夠認識到:「富」「1326」「394aa」等如果一個變量只包含一個單詞

這將是這樣的:

$txt = "oneword"; 

if($txt == 1 word){ do.this; }else{ do.that; } 

感謝。

+0

你需要更清楚地界定什麼是「字」是在這方面。什麼描述彼此的兩個詞?顯然'''兩個單詞'''是兩個單詞,但'''連字符「''怎麼樣?怎麼樣''「空格」''? – BishopRook

+0

其中id「1326」或「394aaa」中的詞首隻是數字。在第二個字母中,但aaa實際上不是一個字 – mcgrailm

回答

8

我假設一個詞定義爲一個空間符號

$txt = "multiple words"; 

if(strpos(trim($txt), ' ') !== false) 
{ 
    // multiple words 
} 
else 
{ 
    // one word 
} 
+2

也可能修剪字符串,以便不計算「字」或「字」 – danneth

+0

@danneth但是如果「字」被認爲是兩個單詞呢?這看起來可能很愚蠢,但我們不能認爲這是不合理的。 –

+0

@ kiley-naro我認爲這幾乎不是必需的行爲。 – gilden

4

什麼定義了一個字所界定的任何字符串?是否允許空格(也許是用於名稱)?連字符是否允許?標點?你的問題不是很明確。

,你只是想確定你的價值是否包含空格,請嘗試使用正則表達式的假設下走向:編輯 好處

http://php.net/manual/en/function.preg-match.php

<?php 
$txt = "oneword"; 

if (preg_match("/ /", $txt)) { 
    echo "Multiple words."; 
} else { 
    echo "One word."; 
} 
?> 

使用正則表達式是如果你能夠熟練使用它們,它們將解決你的許多問題,並且使未來的需求變化更容易。我強烈建議使用正則表達式對空間的位置進行簡單的檢查,既考慮到今天問題的複雜性(同樣,空間也許不是劃分需求中單詞的唯一方法),還可以用於在將來改變需求的靈活性。

+2

「有些人在遇到問題時想」我知道,我會用正則表達式「。現在他們有兩個問題。「 - 賈米Zawinski – mcgrailm

0

利用PHP中包含的strpos函數。

以整數形式返回位置。如果未找到針,則strpos() 將返回布爾值FALSE。

1

此外strpos,另一種是explodecount

$txt = trim("oneword secondword"); 
$words = explode(" ", $txt); // $words[0] = "oneword", $words[1] = "secondword" 

if (count($words) == 1) 
    do this for one word 
else 
    do that for more than one word assuming at least one word is inputted 
+0

這將工作,但要求兩個功能,而在其他例子中只需strpos – mcgrailm

+0

非常真實。其他人更有效率。雖然他沒有要求,但根據他想要如何處理他的多個單詞,他可以使用爆炸陣列或計數作爲他的處理的一部分。 – Josh

+0

沒有看到其他方式很好,只是想指出它的效率稍低。 – mcgrailm

相關問題