как я нахожу значение в строке в php

Мое значение хранится в строке внутри (). Я должен возвратить это значение, чтобы проверить, пусто ли это.

$variable = "<a href=\"http://www.link-url.ext\">My Link</a> (55)";
$value = "55"; // how do I get the value?

if($value < 1) { 
    // no link
} else {
    // show link
}

Этот код использовался бы для показа ссылок без сообщений в них в Wordpress.

1
задан Artefacto 18 June 2010 в 16:17
поделиться

7 ответов

$variable = "My Link (55) plus more text";
preg_match('/\((.*?)\)/',$variable,$matches);

$value = $matches[1];
echo $value;
2
ответ дан 2 September 2019 в 23:41
поделиться
if(strpos($string,')')-strpos($string,'(')==1)){
  #empty
}

, чтобы вернуть строку

$newstring = substr($string,strpos($string,'('),strpos($string,')')-strpos($string,'('));
0
ответ дан 2 September 2019 в 23:41
поделиться

Это:

<?php
$str = "blah blah blah blah blah blah blah (testing)blah blah blah blah blah ";

echo preg_filter("/.*(\(.*?\)).*/","\\1",$str);
?>

Будет выводить (тестирование). Надеюсь, это то, что вы искали: o)

0
ответ дан 2 September 2019 в 23:41
поделиться

Ваш вопрос не совсем понятен - хотя вам следует использовать instr

0
ответ дан 2 September 2019 в 23:41
поделиться

Вы можете использовать preg_match для извлечения значения из вашей строки. Но если вам просто нужно узнать, пустое ли значение, то проверка, содержит ли ваша строка (), будет работать так же хорошо.

0
ответ дан 2 September 2019 в 23:41
поделиться

Вы ищете значение строки или просто проверяете, пуста ли она?

Если вы проверяете, пуста ли строка, попробуйте

return empty($mystring);
0
ответ дан 2 September 2019 в 23:41
поделиться

Собирая все это вместе, из примера ясно, что InnateDev намеревается проверять на положительных числовых значениях в скобках. На мой взгляд, самый безопасный способ сделать это:

$testString = "<a href=\"http://www.link-url.ext\">My Link</a> (55)";
$matches = array();

/* Assuming here that they never contain negative values e.g. (-55) */
preg_match('/\((\d*?)\)/s', $testString, $matches);

$hasComments = false;

if (count($matches) >= 1) // * Note A
{
    $hasComments = $matches[1] > 0;
}

if ($hasComments)
{
    // link
}
else
{
    // no link
}  

Примечание A: Возможно, это избыточно, и в этом случае вы можете проигнорировать его - это также можно сделать как комментарий к Mark Бейкер ответ (извините, у вас еще нет этих 50 представителей :() - если вы работаете в среде, где error_reporting включает E_NOTICE , и если проверяемая строка поступает из ненадежного источника, то $ match [1] вызовет уведомление, если скобки отсутствуют. Просто хочу указать на это.

0
ответ дан 2 September 2019 в 23:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: