2016-02-18 2 views
0

Мне нужно проверить, начинается ли строка и заканчивается ли она ". И если это не так, то к ней следует добавить ". text конвертировать в "text" Я использую феллинг код для этого:..проверить, если строка начинается и заканчивается на ", и добавить к ней, если нет

if (strpos($owner_text, '"') !== 0) 
{ 
    $owner_text = '"' . $owner_text . '"'; 
} 

тогда я понял, что это не будет работать, если у меня есть что-то вроде text" или "text В этих случаях text" будут преобразованы в "text"" и "text останется нетронутым. Поэтому я меняю код выше:

// e.g. text. strpos returns false if nothing found 
if (strpos($owner_text, '"') === false && strrpos($owner_text, '"') === false) 
{ 
    $owner_text = '"' . $owner_text . '"'; 
} 
// "text 
else if (strpos($owner_text, '"') === 0 && strrpos($owner_text, '"') === 0) 
{ 
    $owner_text = $owner_text . '"'; 
} 

else if (strpos($owner_text, '"') !== 0 && strrpos($owner_text, '"') !== 0) 
{ 
    // text" 
    if (strpos($owner_text, '"') == strlen($owner_text) - 1) 
    { 
     $owner_text = '"' . $owner_text; 
    } 
    // te"xt 
    else 
    { 
     $owner_text = '"' . $owner_text . '"'; 
    } 
} 

это теперь работает с text"text или text", но мне кажется, reaaaally сложен и имеет проблемы с чем-то вроде te"xt". Как мне это сделать должным образом?

+0

Просто проверить первый и последний символ вместо поиска '" 'во всей строке. –

ответ

1

Просто проверить первый и последний символ вместо того, чтобы искать " во всей строке:

if ($owner_text[0] != '"') $owner_text = '"'.$owner_text; 
if ($owner_text[strlen($owner_text)-1] != '"') $owner_text = $owner_text.'"'; 

Обратите внимание, что этот код не выполняет никакой проверки ошибок на $owner_text.

Update Вы можете даже сделать это с меньшим количеством кода (и это также берет на себя обработку ошибок, например, если $onwer_text пуст):

$owner_text = '"'.trim($owner_text, '"'), '"'; 
+0

OMG, его так просто я должен придумать, что сам ... явно думал слишком много ... – yangsunny

+0

@yangsunny Я добавил еще один, даже более короткий способ. –

+0

@Bart Это то, что у меня было в голове :) – Parth

0

Попробуйте это. Это может работать для вас

<?php 

$str = "yangsunny"; 

$first = substr($str, 0,1); 
$last = substr($str,-1); 
if($first!=='"'){ 
    $str = '"'.$str; 
} 
if($last!=='"'){ 
    $str = $str.'"'; 
} 

echo $str; 

?> 
Смежные вопросы