我試圖做到這一點:有2條或3個規則與PHP
我有一個這樣的鳴叫:
#iamatweet我們準備做一個紙29x12尺寸
我可以拆分這個字符串,但是我怎樣才能從這個字符串得到29x12 ...它來作爲$mytweet
...我怎麼能做到這一點?
我試圖做到這一點:有2條或3個規則與PHP
我有一個這樣的鳴叫:
#iamatweet我們準備做一個紙29x12尺寸
我可以拆分這個字符串,但是我怎樣才能從這個字符串得到29x12 ...它來作爲$mytweet
...我怎麼能做到這一點?
在你的情況,這是很容易的,你可以把尺寸(45)的偏移量和它的長度(5),像這樣:
$dimension = substr($mytweet, 45, 5);
它變得更加複雜,如果子串的位置29x12
左右移動,那麼你需要先搜索它。但是,這會帶來下一個問題,應該搜索哪些內容?如果你知道它的字符串29x12
不已,你就不需要將其解壓:
$dimension = '29x12';
所以,你應該分享你正在試圖解決該問題正是。
您可以使用此代碼解析尺寸:
if (preg_match("/(^|\s)\d+x\d+(\s|$)/", "#iamatweet we are going to make a paper with 29x12 dimensions", $m)) {
echo $m[0];
}
要澄清一下這個正則表達式執行以下部分表示:
(^|\s) - Beginning of line or a space
\d+ - First number, minimum one digit
x - Сharacter that you use as delimiter in dimension
\d+ - Second number, minimum one digit
(\s|$) - End of line or a space
你們請澄清一下代碼嗎?我的意思是,我知道它做了什麼,但穆斯塔法Hepekiz不 –
謝謝沃爾科夫我會嘗試 –
由於hakre說,你要解釋清楚你的要求。在這種情況下,您需要明確定義您要在字符串內搜索的內容。
根據您的意見和例子,看來你正在尋找一個下列定義相匹配的字符串:
x
字符(不帶空格的變化量)在這種情況下的另一種變化的量,正則表達式是適當的查找和分機收聽你正在尋找的字符串。但是我們仍然缺少一個重要的信息:可以接受多少位數字?
如果這個問題的答案是未知的或無限的,那麼這個正則表達式將工作:
\d+x\d+
如果是有極限的,那麼你就需要施加這些限制在正則表達式。例如,如果你只能有數字2到4(無多,不會少),這個正則表達式將如下所示:
\d{2,4}x\d{2,4}
請注意,我們也不得不做出上述假設的:(不帶空格)。空間是否允許?如果是這樣,那是另一種變化,它看起來像:
\d{2,4} x \d{2,4}
爲了解釋這個好一點:
\d{2,4} - Matches between 2 and 4 digits
- Matches a single space character
x - Matches a single 'x' character
- Matches a single space character
\d{2,4} - Matches between 2 and 4 digits
你會使用這些正則表達式中的PCRE functions之一,例如,preg_match()
:
$regex = '\d{2,4}x\d{2,4}';
$tweet = '#iamatweet we are going to make a paper with 29x12 dimensions';
preg_match('#(' . $regex . ')#', $tweet, $matches);
echo "The dimensions are " . $matches[1];
在這個例子中,preg_match()
匹配正則表達式對你的輸入字符串,和捕獲的匹配(在正則表達式中捕獲的文本跨度)在$matches
變量中。由於正則表達式有一個捕獲組,因此正則表達式捕獲的文本在$matches[1]
中可用,我在echo
語句中打印出該文本。
希望這個答案對於你如何闡明你的問題和要求有一定的瞭解,以便讀者能夠理解你在找什麼。密切關注被問到的細節,因爲它們對於回答你的問題至關重要。否則,沒有足夠的信息供任何人提供幫助。
29x12究竟是什麼? –
向我們解釋你想要做的事情。拆分字符串的規則是什麼?你試過什麼了? –