在 php 中使用 ucfirst 将数据库中的城市名称大写?
Capitalize city name from database with ucfirst in php?
是否可以使用例如 ucfirst 使 {CITY} 输出大写?能否以某种方式更改此代码以使其大写?
<?php
$city_meta = get_option('city_meta' );
$city_description = get_option('city_description' );
$default_api = get_option('default_api' );
/* Update Settings */
if(isset($_POST['submit_changes'])){
update_option('city_meta',$_POST['city_meta']);
update_option('city_description',$_POST['city_description']);
$info =weatherCity::getCities();
//$info =array_slice($info, 0, 3);
$sr=0;
foreach($info as $key=>$value):
$postTitle = 'Väder '.$value->name;
global $wpdb;
$pageInfo=$wpdb->get_row("SELECT ID FROM `".$wpdb->prefix."posts` WHERE post_title = '" . $postTitle . "' AND `post_type`='page' ");
if(!empty($pageInfo)):
$metaTitle=$_POST['city_meta'];
$metaDesc=$_POST['city_description'];
$metaTitle=str_replace('{CITY}',$value->name,$metaTitle);
$metaDesc=str_replace('{CITY}',$value->name,$metaDesc);
update_post_meta($pageInfo->ID,'_yoast_wpseo_title',$metaTitle);
update_post_meta($pageInfo->ID,'_yoast_wpseo_metadesc',$metaDesc);
$sr++;
endif;
endforeach;
set_error_message( _e('City Meta Settings has been updated succesfully','weather'),'0');
foreceRedirect(admin_url('admin.php?page=city_meta') );
exit;
}
?>
如果有人能为此找到一个简单的解决方案,那就太好了。 :-)
你可以使用 ucwords()
$metaTitle=ucwords(str_replace('{CITY}',$value->name,$metaTitle));
$metaDesc=ucwords(str_replace('{CITY}',$value->name,$metaDesc));
这会将字符串中每个单词的第一个字符大写。
PHP.Net link
有几种方法,我认为最优雅的方法是使用 css text-transform 属性 capitalize text-transform: capitalize;
因为它不会改变数据
但是是的 ucfirst()
也应该完成这项工作,但这里的数据将被更改以供进一步处理
您也可以在 mysql 查询
中完成这项工作
在你的例子中,如果你想使用 ucfirst()
你应该替换行
$metaTitle=str_replace('{CITY}',$value->name,$metaTitle);
$metaDesc=str_replace('{CITY}',$value->name,$metaDesc);
和
$metaTitle=str_replace('{CITY}', ucfirst($value->name),$metaTitle);
$metaDesc=str_replace('{CITY}', ucfirst($value->name),$metaDesc);
谢谢@dotkomm 和@Harvey Fletcher,结合你们的回答解决了这个问题。
解决方案如下所示:
$metaTitle=str_replace('{CITY}', ucwords($value->name),$metaTitle);
$metaDesc=str_replace('{CITY}', ucwords($value->name),$metaDesc);
是否可以使用例如 ucfirst 使 {CITY} 输出大写?能否以某种方式更改此代码以使其大写?
<?php
$city_meta = get_option('city_meta' );
$city_description = get_option('city_description' );
$default_api = get_option('default_api' );
/* Update Settings */
if(isset($_POST['submit_changes'])){
update_option('city_meta',$_POST['city_meta']);
update_option('city_description',$_POST['city_description']);
$info =weatherCity::getCities();
//$info =array_slice($info, 0, 3);
$sr=0;
foreach($info as $key=>$value):
$postTitle = 'Väder '.$value->name;
global $wpdb;
$pageInfo=$wpdb->get_row("SELECT ID FROM `".$wpdb->prefix."posts` WHERE post_title = '" . $postTitle . "' AND `post_type`='page' ");
if(!empty($pageInfo)):
$metaTitle=$_POST['city_meta'];
$metaDesc=$_POST['city_description'];
$metaTitle=str_replace('{CITY}',$value->name,$metaTitle);
$metaDesc=str_replace('{CITY}',$value->name,$metaDesc);
update_post_meta($pageInfo->ID,'_yoast_wpseo_title',$metaTitle);
update_post_meta($pageInfo->ID,'_yoast_wpseo_metadesc',$metaDesc);
$sr++;
endif;
endforeach;
set_error_message( _e('City Meta Settings has been updated succesfully','weather'),'0');
foreceRedirect(admin_url('admin.php?page=city_meta') );
exit;
}
?>
如果有人能为此找到一个简单的解决方案,那就太好了。 :-)
你可以使用 ucwords()
$metaTitle=ucwords(str_replace('{CITY}',$value->name,$metaTitle));
$metaDesc=ucwords(str_replace('{CITY}',$value->name,$metaDesc));
这会将字符串中每个单词的第一个字符大写。
PHP.Net link
有几种方法,我认为最优雅的方法是使用 css text-transform 属性 capitalize text-transform: capitalize;
因为它不会改变数据
但是是的 ucfirst()
也应该完成这项工作,但这里的数据将被更改以供进一步处理
您也可以在 mysql 查询
中完成这项工作在你的例子中,如果你想使用 ucfirst()
你应该替换行
$metaTitle=str_replace('{CITY}',$value->name,$metaTitle);
$metaDesc=str_replace('{CITY}',$value->name,$metaDesc);
和
$metaTitle=str_replace('{CITY}', ucfirst($value->name),$metaTitle);
$metaDesc=str_replace('{CITY}', ucfirst($value->name),$metaDesc);
谢谢@dotkomm 和@Harvey Fletcher,结合你们的回答解决了这个问题。
解决方案如下所示:
$metaTitle=str_replace('{CITY}', ucwords($value->name),$metaTitle);
$metaDesc=str_replace('{CITY}', ucwords($value->name),$metaDesc);